﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace InterfaceStudy
{
    /// <summary>
    /// 学生类
    /// 接口多继承,实现了多个接口(相当于人有多个干爹)
    /// 一个派生类，只能有一个父类(相当于人只能有一个亲爹)
    /// </summary>
    public class Studnet : IAnimal, IPerson
    {
       
        /// <summary>
        /// 实现IAnimal接口的Run
        /// 隐式实现（IPerson和IAnimal中都有Run()方法）
        /// </summary>
        /// <exception cref = "NotImplementedException" ></ exception >
        //public void Run()
        //{
        //    Console.WriteLine("学生在跑步！");
        //}


        /// <summary>
        /// 实现IPerson接口的Think
        /// </summary>
        /// <exception cref="NotImplementedException"></exception>
        public void Think()
        {
            Console.WriteLine("学生在认真的思考做题！");
        }

        //多个接口拥有同样的方法
        //多继承的时候可以隐式实现，也可以显式实现
        //一般情况下用隐式实现，很少使用显示实现


        /// <summary>
        /// 显式实现IAnimal接口的Run方法
        /// 调用时必须通过IAnimal接口的对象调用，使用Student类的对象无法调用
        /// </summary>
        /// <exception cref="NotImplementedException"></exception>
        void IAnimal.Run()
        {
            Console.WriteLine("动物在跑步");
        }

        /// <summary>
        /// 显式实现
        /// 调用时必须通过IPerson接口，使用Student类的实例对象无法调用
        /// </summary>
        /// <exception cref="NotImplementedException"></exception>
        void IPerson.Run()
        {
            Console.WriteLine("人类在跑步");
        }
    }
}
